package loja.thinlet;

import java.awt.Color;
import java.io.IOException;
import java.util.LinkedList;
import java.util.ResourceBundle;

import javax.swing.JOptionPane;

import dbconnection.BaseDados;
import loja.Fornecedor;
import loja.GestorFornecedor;
import loja.GestorProdutos;
import loja.JaExisteException;
import loja.Produto;
import thinlet.FrameLauncher;
import thinlet.Thinlet;

public class WFornecedorXML extends Thinlet{

	private GestorFornecedor gestor= null;
	private GestorProdutos gestorP = null;
	private InterfaceXML inter=null;
	
	
	
	
	/**
	 * @param gf
	 * @param gp
	 * @param portugues
	 * @param inter
	 * @throws IOException
	 */
	public WFornecedorXML(GestorFornecedor gf, GestorProdutos gp, boolean portugues,InterfaceXML inter)
			throws IOException {
		if (portugues)
			setResourceBundle(ResourceBundle.getBundle("loja.thinlet.pt"));
		else
			setResourceBundle(ResourceBundle.getBundle("loja.thinlet.en"));
		this.gestor = gf;
		this.inter=inter;
		this.gestorP=gp;
		add(parse("janelafornecedor.xml"));
		
	}
	
	/**
	 * @throws IOException
	 */
	public WFornecedorXML() throws IOException{
		 add(parse("janelafornecedor.xml"));
		 
	 }
	/**
	 * @param args
	 * @throws IOException 
	 */
 /**
 * 
 */
public void sair(){
	 inter.m_fornecedor.dispose();
	 
 }

 /**
 * @param id
 * @param nif
 * @param nome
 * @param morada
 * @param contacto
 * @param lista_produtos
 * @param lista_fornecedores
 * @param erro1
 * @param erro2
 * @param message
 */
public void editarFornecedor(Object id, Object nif, Object nome, Object morada, Object contacto, Object lista_produtos, Object lista_fornecedores,Object erro1, Object erro2, Object message) {
	 long NIF =0;
	 long Contacto =0;
	 setIcon(erro1,"icon",getIcon(""));
	 setIcon(erro2,"icon",getIcon(""));
	 try{
		 NIF = Long.parseLong(getString(nif,"text")); 
	 }
	 catch(Exception e){
		 setIcon(erro1,"icon",getIcon("error.png"));
	 }
	 
	 	
	try{
		Contacto = Long.parseLong(getString(contacto,"text"));
	}catch(Exception e){
		 setIcon(erro2,"icon",getIcon("error.png"));}
	if(Contacto==0||NIF==0|| getString(nome,"text").isEmpty()||getString(morada,"text").isEmpty())
		JOptionPane.showMessageDialog(null, "Campos mal preenchidos ou vazios");
	else{
	 
	 int ID = Integer.parseInt(getString(id,"text"));
	 	NIF = Long.parseLong(getString(nif,"text"));
		String nom = getString(nome,"text");
		Contacto = Long.parseLong(getString(contacto,"text"));
		String Morada = getString(morada,"text");
		gestor.EditaFornecedor(gestor.GetFornecedor(ID), nom, Contacto, Morada, NIF);
		gestor.retiraProdutosFornecedor(gestor.GetFornecedor(ID));
		for(int i=0; i!=getItems(lista_produtos).length;i++){
			String Nproduto = getString(getItem(lista_produtos,i),"text");
			for(Produto produto: gestorP.getProdutos()){
				if(produto.getNome().equals(Nproduto)){
					gestor.InsereProdutoFornecedor(produto,gestor.GetFornecedor(ID));
				} 
			}
		}
		setColor(message,"foreground",new Color(0,159,0));
		setString(message,"text","Fornecedor editado com sucesso!!!!");
		removeAll(lista_fornecedores);
		iniciaListaFornecedores(lista_fornecedores);
 }

 }
 /**
 * @param id
 * @param nif
 * @param nome
 * @param morada
 * @param contacto
 * @param lista_produtos
 * @param lista_fornecedores
 * @param erro1
 * @param erro2
 * @param message
 * @throws JaExisteException
 */
public void adicionarFornecedor(Object id, Object nif, Object nome, Object morada, Object contacto,Object lista_produtos, Object lista_fornecedores, Object erro1, Object erro2, Object message) throws JaExisteException {
	 long NIF =0;
	 long Contacto =0;
	 setIcon(erro1,"icon",getIcon(""));
	 setIcon(erro2,"icon",getIcon(""));
	 try{
		 NIF = Long.parseLong(getString(nif,"text")); 
	 }
	 catch(Exception e){
		 setIcon(erro1,"icon",getIcon("error.png"));
	 }
	 
	 	
	try{
		Contacto = Long.parseLong(getString(contacto,"text"));
	}catch(Exception e){
		 setIcon(erro2,"icon",getIcon("error.png"));}
	if(Contacto==0||NIF==0|| getString(nome,"text").isEmpty()||getString(morada,"text").isEmpty())
		JOptionPane.showMessageDialog(null, "Campos mal preenchidos ou vazios");
	else{
		String nom = getString(nome,"text");
		String Morada = getString(morada,"text");
		Fornecedor f = new Fornecedor(nom, Contacto, Morada, NIF);
		gestor.InsereFornecedor(f);
		for(int i=0; i!=getItems(lista_produtos).length;i++){
			String Nproduto = getString(getItem(lista_produtos,i),"text");
			for(Produto produto: gestorP.getProdutos()){
				if(produto.getNome().equals(Nproduto)){
					gestor.InsereProdutoFornecedor(produto, gestor.GetFornecedores().getLast());
					setColor(message,"foreground",new Color(0,159,0));
					setString(message,"text","Fornecedor inserido com sucesso!!!!");
				} 
			}
		}	 
		removeAll(lista_fornecedores);
		removeAll(lista_produtos);
		iniciaListaFornecedores(lista_fornecedores);
 }

 }
 /**
 * @param combo_produtos
 * @param lista_produtos
 * @param id
 */
public void  adicionarProduto(Object combo_produtos,Object lista_produtos,Object id){
	 if(getSelectedIndex(combo_produtos)==-1){
			JOptionPane.showMessageDialog(null, "Seleccione o produto a inserir");
		}else{
	 int prod = getSelectedIndex(combo_produtos);
	 Object item = create("item");
	 setString(item,"text",gestorP.getProdutos().get(prod).getNome());
	 add(lista_produtos,item);
  }
 }
 /**
 * @param lista_produtos
 */
public void removerProduto(Object lista_produtos){
	remove(getSelectedItem(lista_produtos)); 
 }
 /**
 * @param lista_fornecedores
 */
public void iniciaListaFornecedores(Object lista_fornecedores){
	 for(Fornecedor fornecedor: gestor.GetFornecedores()){
		Object item = create("item");
			setString(item,"text", fornecedor.getNome());
			add(lista_fornecedores, item);
		 }
 }

 /**
 * @param combo_produtos
 */
public void iniciaComboProdutos(Object combo_produtos){
	 for(Produto produto:gestorP.getProdutos() ){
			Object choice = create("choice");
				setString(choice,"text", produto.getNome());
				add(combo_produtos, choice);
	 } 
 }
 /**
 * @param lista_fornecedores
 * @param id
 * @param nif
 * @param nome
 * @param morada
 * @param contacto
 * @param lista_produtos
 */
public void iniciaValores(Object lista_fornecedores, Object id,Object nif,Object nome,Object morada,Object contacto,Object lista_produtos){
	 removeAll(lista_produtos);
	 Fornecedor fornecedor=new Fornecedor();
	 String fnome = getString(getSelectedItem(lista_fornecedores),"text");
	 for(Fornecedor f: gestor.GetFornecedores()){
	 	if(f.getNome().equals(fnome))
	 		fornecedor=f;
	 }
	 
	setString(nome,"text",fornecedor.getNome());
	setString(morada,"text",fornecedor.getMorada());
	setString(id,"text",String.valueOf(fornecedor.getId()));
	setString(nif,"text",String.valueOf(fornecedor.getNif()));
	setString(contacto,"text",String.valueOf(fornecedor.getContacto()));
	
	for(Produto produto: gestor.GetProdutosFornecedor(fornecedor)){
		Object item = create("item");
		 setString(item,"text",produto.getNome());
		 add(lista_produtos,item);		
	}
	
	
 }
  
 /**
 * @param id
 * @param lista_fornecedores
 * @param message
 */
public void removerFornecedor(Object id,Object lista_fornecedores, Object message){
	if(getString(id,"text").isEmpty()){
		JOptionPane.showMessageDialog(null, "Seleccione o fornecedor a remover");
	}else{
	 int Id = Integer.parseInt(getString(id,"text"));
	 gestor.removeFornecedor(Id);
	 setColor(message,"foreground",new Color(0,159,0));
	setString(message,"text","Fornecedor removido com sucesso!!!!");
	 removeAll(lista_fornecedores);
	 iniciaListaFornecedores(lista_fornecedores);
	} 
 }
 
 

	public static void main(String[] args) throws IOException {
		
	}

}
